1. Field of the Invention
The present invention relates to a method, system, and article of manufacture for generating information on database queries in source code into object code compiled from the source code.
2. Description of the Related Art
Application programs written in a high-level computer language, such as C++, JAVA™, etc., may include a database query, such as a Structured Query Language (SQL) statement, to read, write, modify and delete data in an external source, such as a database. (Java is a trademark of Sun Microsystems, Inc. in the United States and other countries). The executable program may communicate queries to a database server over a network to execute against the target database. Application developers seek to improve the accuracy and response time in completing query processing, which is affected by the processing time at the application and database sides and the network communication time.
After writing the source code including the query statements, the developer invokes a compiler process to translate the source code and database query statements into executable object code. In an implementation where the SQL statements are dynamic, which means the query conditions or search parameters may be changed by the application when invoked, the query statements may be optimized and translated to binary code. In an implementation where the SQL statements are static, which means the query conditions or search parameters are not changed by the executing application in which they are called, a precompiler may output the query statements to a database request module. The query statements sent to the database request module are forwarded to a bind tool at the database that pre-processes the query statements, determines a query execution plan, and otherwise prepares the query for subsequent execution when the query is invoked by the application during runtime.
During debugging and testing, the application developer may review the original application source code to extract and analyze the query statements if there are problems during execution of the object code. For instance, the application developer may need to retrieve and manipulate information on the database query execution to test the database query performance in the application program. Further, end users may require certain quality of service with respect to application processing time, which may depend on the query processing time at the database server.
Developers may gather information about static database query requests, i.e., those that do not change during application execution, and catalog that information in a system catalog. However, such cataloged information is typically limited to information needed by the database to process the request and does not include a variety of information that would be helpful to trace the problem back to the application. Further, such catalog information may not be available for dynamic queries, i.e., those that may change during application execution. Developers may also employ an external program or product that intercepts or listens to queries that are sent to the database and to the resulting replies. While these programs provide a level of monitoring with minimal intrusion into the performance of the database or application, they can only observe information in the query request's command syntax made available by the database.
There is a need in the art for improved techniques for obtaining information on query statements in source code for testing the executable object code.